package ar.edu.utn.frsf.tpae.a2014.g03.persistence.dao;

import java.util.List;

import ar.edu.utn.frsf.tpae.a2014.g03.persistence.model.Pedido;

/**
 * Interfaz que define las operaciones que debe proveer un DAO de Pedido
 * 
 * @author TPAE-2014-g03
 * 
 */

public interface PedidoDAO {

	/**
	 * Crea o modifica un pedido, en funcion del valor del Id.Si el id es null
	 * crea una nueva entidad en la BD, sino la actualiza
	 * 
	 * @param pedido
	 * @return
	 */
	Pedido persistir(Pedido pedido);

	/**
	 * Obtiene todos los pedidos de un cliente
	 * 
	 * @param id
	 * @return
	 */
	List<Pedido> findPedidoCliente(Integer idCliente);
	
	/**
	 * Obtiene un pedido,utilizando el id como criterio de busqueda
	 * 
	 * @param id
	 * @return
	 */
	Pedido findById(Integer id);

	/**
	 * Obtiene todos los pedidos
	 * 
	 * @return
	 */
	List<Pedido> findAll();
	
	/**
	 * Elimina todos los pedidos
	 */
	void deleteAll();
	
	/**
	 * Obtiene los pedidos que no fueron asignados a un transportista
	 * 
	 * @return
	 */
	List<Pedido> findPedidosSinAsignar();

}
